草庐IT

c++ - MSVCP110D.dll 和 Visual Studio 2013

全部标签

windows - 为什么我不能通过 codelite-ide 构建一个 dll?

在Windows上,通过codelite(编译器gcc),我编写了一个简单的程序并想将其构建到一个dll中。我建工程后,没有dll出来。然后我将程序移植到dev-c++,构建它,dll成功出来。为什么codelite不起作用?因为我选择了gcc? 最佳答案 如果其他人在使用CodeLite在Windows上创建/链接库时遇到问题,请确保输出文件名不包含.so扩展名。默认情况下,Windows上的CodeLite使用Unix共享对象(.so)扩展名,因此在项目选项中将其更改为动态链接库(.dll)。花了非常烦人的三个小时来玩弄配置,并

c - 在没有宿主程序帮助的情况下,如何在同一个进程中协调不同的 DLL?

我正在寻找一种方法来协调同一进程中的DLL,以便在它们之间提供数据共享机制。目标是为所有DLL提供相同的共享代码,并让它们以这样一种方式进行协调,即由主程序加载的第一个将充当共享项的管理器,而其他人将使用此管理器。我无法修改主应用程序,因此不可能设置管理器并与其他DLL共享其内存地址。使用此机制的DLL集可能会有所不同,因此我不能明确假设其中一个将被加载。我考虑的一种解决方案是将内存地址添加到进程的环境变量中。第一个DLL会看到环境变量尚未设置,创建管理器对象并将变量设置为其地址。其他DLL会看到该变量并从中创建一个指向管理器对象的指针。这接近我想要的,但它似乎有点粗糙,因为不能保证环

c++ - 使用 dll 中的类时内存无效

这是我第一次尝试从dll导出类。我所做的是:-创建一个接口(interface)(只有纯虚方法)-使用不会导出的类在dll中实现此接口(interface)-该类有一个在其this指针上调用delete的释放方法-创建了一个带有静态方法的工厂类,该方法返回指向具体类的指针但作为接口(interface)。这个类是导出的。-返回对象的删除是通过调用其释放方法完成的。我从本教程中收集了所有这些aboutclassesindlls.问题是,当我在另一个项目中使用此dll时,一切正常,直到我对该对象调用释放函数。然后它会显示一个断言失败窗口,其中包含消息“_ASSERTE(_BLOCK_TYP

c - 如何检查指定用户是否是本地计算机上的管理员?

我想知道用户是否是PC上的管理员?我找到了执行此操作的代码片段,但我遇到了问题。这段代码的问题是,如果启动进程的用户是否具有管理员权限,则此函数将返回。但我想查询特定用户是否具有管理员权限。我能以某种方式做到这一点吗?这很重要,因为我的应用程序将在SYSTEM帐户下运行,因此它总是返回用户是管理员,但我想知道登录用户是否是管理员?代码片段:BOOLIsUserAdmin(VOID)/*++RoutineDescription:ThisroutinereturnsTRUEifthecaller'sprocessisamemberoftheAdministratorslocalgroup.

windows - 我如何知道我的 DLL 是如何加载的?

我的DLL如何检测它是隐式加载还是显式加载?示例MyTestDll.dlllibraryMyTestDll;usesSimpleShareMem,Windows,Dialogs;procedureDetectMethodDllLoad:bool;begin//?????//needtodetectloadingmethod-implicitorexplicitend;procedureMyTest;stdcall;beginifDetectMethodDllLoadthenShowMessage('WorkingProgram1(implicitdllload)')elseShowMe

卷的 CreateFileMapping() 失败

我在将部分卷映射到内存时遇到问题。卷已成功打开,我可以从中读取,但CreateFileMapping()失败。GetLastError()返回87,其中有following意思是:“参数不正确。”我已经创建了卷的图像并且它被正确处理了。这就是我打开文件和创建映射的方式:/*openfunction*/fd->handle=CreateFile(name,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);/*mappingfunction*/LARGE_

c - 在全屏模式下打开 Windows 控制台程序

我正在开发一个打印消息的C程序。它的问题是当我运行它的.exe文件时,它不会全屏运行(直到我按alt+enter强制它进入全屏)。我希望程序在我运行时以全屏模式运行。有什么办法可以做到吗?提前致谢。 最佳答案 您可以调用SetConsoleDisplayMode()强制使用CONSOLE_FULLSCREEN_MODE。请注意,对此的支持正在消失。我拥有的最后一台仍然可以执行此操作的机器已经积灰了很长一段时间。伴随着响亮的继电器咔嗒声的内存,混合着CRT中反激式变压器的高音哀号。 关于c

c - 在 Visual Studio 中避免 LNK2005 错误

我有这些文件:main.cmyLib.hmyLib.c但是当我试图编译整个项目时返回这个错误:1>myLib.obj:errorLNK2005:_start_serveralreadydefinedinmain.obj1>C:\Users\n3tpum63r\documents\visualstudio2010\Projects\NewMultiPlex2\Debug\main.exe:fatalerrorLNK1169:oneormoremultiplydefinedsymbolsfound我用谷歌搜索了一下,找到了这个"LNK2005ErrorsWhenLinkCRun-TimeL

windows - 无法让 xperfview 加载 DLL 的符号

我一直在用xperf竭尽全力为我正在分析的工具获取符号。我在该工具中运行的代码分为.exe和.dll——要分析的重要内容位于.dll中。我运行了xperf:xperf-onPROC_THREAD+LOADER+INTERRUPT+DPC+PROFILE-stackwalkprofile然后我运行了一下我的工具,然后xperf-dprofile.etl然后我尝试了xperfview。我加载了配置文件,打开“加载符号”,然后打开了汇总表。根本没有符号——从字面上看,模块在功能列中出现了“未知”。我已经在这方面搜索了其他线程,这是我尝试过的:我设置了我的环境变量,_NT_SYMBOL_PAT

c - 该代码在编译时没有显示错误,但没有显示任何输出

程序很简单,输出最大公约数。我已经验证了我的算法。编译器没有报错,但仍然没有输出。#include#includeintgcd(int,int);intmain(){inta,b,j;printf("entertwonumbers");scanf("%d\n",&a);scanf("%d\n",&b);j=gcd(a,b);printf("gcdis%d",j);getch();return0;}intgcd(intx,inty){inttemp,c;if(x 最佳答案 这可能是由于输出缓冲所致。将\n添加到您的printfs并查看